package com.pengtu.gsj.service.impl.lzgl;

import java.util.List;


import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.pengtu.gsj.dao.base.Page;
import com.pengtu.gsj.dao.base.QueryFilter;
import com.pengtu.gsj.dao.lzgl.RoadFileManDao;
import com.pengtu.gsj.entity.app.Attachment;
import com.pengtu.gsj.entity.lzgl.RoadFileMan;
import com.pengtu.gsj.service.lzgl.RoadFileManService;
import com.pengtu.gsj.service.system.SystemManageService;

@Service
@Transactional
public class RoadFileManServiceImpl implements RoadFileManService {

	@Autowired
	private RoadFileManDao roadFileManDao;
	@Autowired
	private SystemManageService systemManageService;
	
	@Override
	public void saveRoadFileMan(RoadFileMan roadFileMan){
		roadFileManDao.save(roadFileMan);
	}
	
	@Override
	public Page<RoadFileMan> findRoadFileMan(Page<RoadFileMan> page, final QueryFilter queryFilter){
		return roadFileManDao.findPage(page, queryFilter);
	}
	
	@Override
	public RoadFileMan getRoadFileManById(String id){
		return roadFileManDao.get(id);
	}
	
	@Override
	public void  delateRoadFileMan(RoadFileMan roadFileMan){
		if(roadFileMan.getAttachments() != null){
			for(Attachment attachment : roadFileMan.getAttachments()){
				systemManageService.deleteAttachment(attachment);
			}
		}
		roadFileManDao.delete(roadFileMan);
	}

	@Override
	public List<RoadFileMan> getOrgName(QueryFilter queryFilter) {
		return roadFileManDao.find(queryFilter, "year", true);
	}

	/**
	 * 适用：用于检查新增或修改公路巡查档案管理 年份+单位名称 是否已经存在
	 * @param year 输入的年份
	 * @param orgName 单位名称
	 * @param id 该条记录的id
	 * @return true or false
	 */
	@Override
	public Boolean checkYearOrg(String year, String orgName, String id) {
		//1、如果id不为空的话，如果是不修改（或修改前后一样）返回true，否则按新增操作处理
		if (StringUtils.isNotEmpty(id)) {
			String oldYear = roadFileManDao.get(id).getYear();
			String name = roadFileManDao.get(id).getOrgName();
			if (oldYear.equals(year) && name.equals(orgName)) {
				return true;
			} else {
				return checkSame(year, orgName);
			}
		} else {
			//2、如果id为空时，则用判断方式判断是否存在year的同时存在orgName
			return checkSame(year, orgName);
		}
	}
	
	/**
	 * checkSame:
	 * 适用:检查公路巡查档案管理中的年份和单位名称是否和数据库中相同
	 * @param year 年份
	 * @param orgName 单位名称
	 * @return true or false
	 * @exception 
	 * @since  1.0.0
	*/
	public Boolean checkSame(String year, String orgName){
		Boolean flag = true;
		if (StringUtils.isEmpty(year) || StringUtils.isEmpty(orgName)) {
			return true;
		} else {
			List<RoadFileMan> roadFileLists = roadFileManDao.findBy("year", year);
			for (RoadFileMan roadFileMan : roadFileLists) {
				if (flag == true) {
					flag = orgName.equals(roadFileMan.getOrgName()) ? false : true;
				}
			}
		}
		return flag;
	}
}
